Совет 200. Частичное решение дифференциального уравнения

  

При численном решении обыкновенных дифференциальных уравнений (ОДУ) и их систем часто возникает ошибка, связанная с «переполнением» расчета – с превышением результата значения 10307 (см. первую строку на рис. 200, где с помощью встроенной функции rkfixed решается (неудачно решается) система двух ОДУ).

При численном решении ОДУ и их систем можно воспользоваться принципом «Часть решения лучше, чем никакого решения!». Этот принцип воплощает пользовательская функция My_rkfixed, реализующая тот же алгоритм (алгоритм Рунге-Кутта четвертого порядка) что и встроенная функция rkfixed, но она включает в себя оператор on error, обрабатывающего аварийные ситуации. Из-за этого численное решение системы ОДУ не прерывается сообщением об ошибке (см. первую строку на рис. 200): функция My_rkfixed возвращает часть решения, которое можно, например, отобразить графически (см. конец рис. 200).

Развитие программы на рис. 200a – замена нулей на оператор break.